約 3,764,625 件
https://w.atwiki.jp/lucier/pages/55.html
郵便番号テーブル(mtb_zip)のデータ件数は約12万8000件。 これをまともにselectしたりすると、アブナイ。 そんなときはindexをはろう。 indexは本でいうところの索引。 これがあるかないかで検索スピードの差は歴然。 そもそもインデックスって? 通常、MySQLでは、selectコマンドを実行した場合、 1レコード目から最終レコードまで、シーケンシャルに検索を行っていく。 データが大量になってくると検索速度の問題が生じる。 そこで出てくるのがインデックス。 インデックスを作成すると検索速度は劇的に改善される。 ただし、MySQLでは1000件以下のデータの場合はインデックスを作成しないほうが 速いとされている。 インデックスとは先ほども記載したとおり、 本の索引のようなもの。 索引語はアイウエオ順、あるいは、アルファベット順に並べられていて、 各々の索引語には、その索引語が登場するページ数(位置情報)が示されています。 読者はその位置情報を頼りに、ページを捲って、 目的のキーワードのある部分を読むことができるようになるという訳です。 逆に、索引がない場合、 1ページ目から順番に目的のキーワードを見つけるために本を読んでいくことの煩わしさを考えれば、 データベースにおいても、シーケンシャルに読んでいくことがいかに非効率であるかがわかりますね。 最も単純なものは、各レコードの先頭の一文字だけを用いたインデックス。 例えば、アルファベットだけで構成されているレコードの場合、 先頭の文字がa~zまでの26のグループに分割されます。 ここで、検索語keyで検索を行った場合、 先頭文字がkであるグループを検索しに行くだけでいいので、 シーケンシャルな検索に較べて、検索速度は圧倒的に速くなります。 仮に、レコード件数が10万件あったとして、そのうち、 先頭がkで始まるレコードが4,000件ならば、 単純計算で検索速度は25倍速くなるということになります。 実際には、先頭1文字ではなく、先頭5文字とか先頭10文字のインデックスを作成しておき、 B-tree(B木)と呼ばれる左右均等なツリー構造にデータを格納しておきます。 インデックスの作成と削除 create index インデックス名 on テーブル名 (フィールド名); とする方法と、tableを作成する際に、同時に create table テーブル名 (index インデックス名 (フィールド名)); とする方法があります。 同様に、alterコマンドを使って、 alter table テーブル名 add index インデックス名 (フィールド名); としても構いません。 create tableとalter tableを使用する場合は、インデックス名を省略することができます。 その場合、インデックス名はインデックスを作成するフィールド名と同じになります。 ちなみに、インデックス化できるフィールドは必ず必須フィールド(not null)でなければなりません。 また、単にフィールド名のみを入力すると、レコードの全てをインデックス化しますが、先頭何文字かまでをインデックス化したいならば、フィールド名(数字)のように指定します。 例えば、bib_tbテーブルのtitleフィールドのレコードを先頭5文字目までをインデックス化したいならば、 create index title_index on bib_tb (title(5)); とします(インデックス名はtitle_index)。 今回はmtb_zipテーブルに対し、 zipcodeを必須に変更し、 そのあとzipcodeの3桁目までをインデックス化してインデックスを作成。 create index zip_index on mtb_zip (zipcode(3)); 作成したインデックスを確認するには、showコマンドを使います。 全文インデックスについて(日本語未対応) ちょっと寄り道します。 さて、インデックスを使った検索が可能となるのは、基本的に、完全一致のselect文です。 このほか、あいまい検索(部分一致)のlike演算子を使った場合、前方一致(keyword%)であれば問題ないのですが、中央一致(%keyword%)や後方一致(%keyword)の場合は、インデックスを使用することができません。 これは、レコードの前方から一文字ずつをインデックス化しているためです。 しかし、実際の検索では、完全一致や前方一致で検索を行うことは稀であり、むしろ、レコード内のどこかに特定のキーワードを含むような検索を行うことの方が多いでしょう。 そういった場合のために、MySQLでは、全文インデックスをサポートしています。 日本語を扱うことはできませんのでご注意下さい。 また、全文インデックスはnot nullであるvarchar型かtext型のフィールドにしか適用できません。 基本構文は以下の通りです。 通常のindexを作成する場合とほとんど変わりありません。 create fulltext index インデックス名 on テーブル名 (フィールド名); create table テーブル名 (fulltext インデックス名 (フィールド名)); alter table テーブル名 add fulltext インデックス名 (フィールド名); やはり、create tableとalter tableでは、インデックス名を省略できます。 全文インデックスの検索方法は、通常の検索や通常のインデックスを用いた際とは異なります。 基本構文は以下の通りです。 select フィールド名 from テーブル名 where match (フィールド名) against ( 検索語 ); したがって、title中にjapanを含むレコードを検索する場合、 select * from bib_tb where match (title) against ( japan ); となります。 ちなみに、全文検索の場合、基本的に、適合度順出力を行います(詳しくはこちら)。 MySQLで日本語全文検索を行うためには、まず、形態素解析やN-gramによって、文字列をワードごとに分割して、スペースで区切り、さらに、16進数文字に変換したりして、あたかも日本語ではないかのように装う必要があります。 ということを、無理矢理やっちゃったエライ方もいらっしゃいます。
https://w.atwiki.jp/m_shige1979/pages/591.html
日付・時刻型 データ型 備考 DATE 日付です。サポートされている範囲は 1000-01-01 から 9999-12-31 です。MySQL は、DATE 値を YYYY-MM-DD フォーマットで表示 DATETIME 日付と時刻の組み合わせです。サポートされている範囲は 1000-01-01 00 00 00 から 9999-12-31 23 59 59 です。MySQL は、 DATETIME 値を YYYY-MM-DD HH MM SS フォーマットで表示 TIMESTAMP タイムスタンプです。範囲は 1970-01-01 00 00 01 UTCから 2037 年の途中までです。TIMESTAMP 値は ( 1970-01-01 00 00 00 UTC)からの秒数として格納されます TIME 時刻です。範囲は -838 59 59 から 838 59 59 です。MySQL は、TIME 値を HH MM SS フォーマットで表示 YEAR[(2|4)] 2桁、または4桁のフォーマットでの年です。デフォルトは4桁のフォーマットです。4桁のフォーマットでは、許容値は 1901 から 2155、そして 0000 です。2桁のフォーマットでは、許容値は1970年から2069年を表す、70 から 69 です。MySQLは YEAR の値を YYYY フォーマットで表示
https://w.atwiki.jp/my-sql/pages/118.html
HOME 関数 日付と時刻関数 QUARTER QUARTER QUARTER(date) date に指定された日付に対応する四半期を、1 〜 4 の範囲の値として返す。 mysql [[SELECT]] QUARTER('98-04-01'); - 2 _uacct = UA-4617913-1 ; urchinTracker();
https://w.atwiki.jp/cowbell/pages/21.html
SQL Server 2008 Chat Messanger を立ち上げたままだと、インストールチェックで「再起動」を要求される。 MySQLへのリンクサーバ設定方法 1.MySQL ODBC Driver を用意する 2.SQL Server Management Studio で、リンクサーバを新規作成 3.以下を入力 リンクサーバー:任意の名称 プロバイダ :Microsoft OLE DB Provider for ODBC Drivers 製品名 :MySQL データソース :ODBCのDSN名 カタログ :データベース名 4.SELECTはいかのように記述 select * from openquery(任意の名前, select * from テーブル名 )
https://w.atwiki.jp/sevenlives/pages/2486.html
四捨五入? Banker s Rounding?
https://w.atwiki.jp/omisono_php/pages/2.html
メニュー トップページ PHP覚書Class php 文字化け smarty pear 関数関数アルファベット順 ajax関連xajax関連 cakePHP覚書 MySQLの覚書accessとodbc接続文字化け プラグイン紹介 メニュー メニュー2 HTML覚書スタイルシート リンク @wiki @wikiご利用ガイド ここを編集
https://w.atwiki.jp/shxxxohxxxx/pages/7.html
『ドラゴンクエスト』の武器データでSQLを学ぶ記事 https //zenn.dev/nameless_sn/articles/sql_tutorial_by_dragon_quest SQLの基礎を総まとめ https //qiita.com/n_oshiumi/items/9424ca773b6c0a809e94 SQLの達人への道 MySQLでの高速・効率的クエリ作成術 https //qiita.com/SimonLee/items/a878f72197 データハンドリングのためのSQL / SQL for data handling https //speakerdeck.com/brainpadpr/sql-for-data-handling 無料でSQLを学べる「SQL Lab」 https //sqlab.net/
https://w.atwiki.jp/my-sql/pages/138.html
HOME 関数 キャスト関数 CAST、CONVERT CAST、CONVERT CAST() 関数と CONVERT() 関数は、あるデータ型の値から別のデータ型の値を生成する目的で使用することができます。構文は以下のとおりです。 CAST(expression AS type) CONVERT(expression,type) CONVERT(expr USING transcoding_name) type には、次のいずれかのデータ型を指定できます。 BINARY CHAR DATE DATETIME SIGNED {INTEGER} TIME UNSIGNED {INTEGER} CAST() と CONVERT() は MySQL 4.0.2 以降で使用することができます。 変換型 CHAR は 4.0.6 以降で使用可能です。 USING を指定する CONVERT() は、4.1.0 以降で使用可能です。 CAST() と CONVERT(... USING ...) は SQL-99 の構文です。 USING を指定しない CONVERT() は ODBC の構文です。 キャスト関数は、CREATE ... SELECT ステートメントで特定の型のカラムを作成する必要があるときに役立ちます。 CREATE TABLE new_table SELECT CAST('2000-01-01' AS [[DATE]]); また、キャスト関数は ENUM 型のカラムを語彙の順序でソートするときにも役立ちます。通常、ENUM 型のカラムのソートは、内部の数値に基づいて行われます。値を CHAR 型にキャストすると、語彙の順序でソートされるようになります。 SELECT enum_col FROM tbl_name ORDER BY CAST(enum_col AS CHAR); CAST(string AS BINARY) は BINARY string と同じです。 CAST(expr AS CHAR) では、指定した式がデフォルトのキャラクタセットの文字列として扱われます。 注意 MysQL 4.0 では、DATE、DATETIME、TIME 型のカラムに CAST() 操作を行った場合、カラムが特定の型としてマークされるだけで、カラム値が変わるわけではありません。 MySQL 4.1.0 では、カラム値は、ユーザに送られるときに適切なカラム型に変換されます(これは、クライアントへの日付情報の送信における、4.1 の新しいプロトコルの機能です)。 mysql SELECT CAST([[NOW]]() AS DATE); - 2003-05-26 後続の MySQL バージョン(おそらく 4.1.2 か 5.0)では、CONCAT("Date ",CAST(NOW() AS DATE)) のような、より複雑な式の一部として CAST を使用した場合にも、結果のデータ型が適切に変換されるよう修正する予定です。 データを別の形式で取り出すときには、CAST() は使用せず、代わりに、LEFT や EXTRACT() のような文字列関数を使用してください。 文字列を数値にキャストするときには、通常は、特に何もしないで、そのままその文字列を数値として使用します。 mysql SELECT 1+'1'; - 2 文字列のコンテキストで数値を使用すると、数値は BINARY 文字列に自動で変換されます。 mysql SELECT CONCAT("hello you ",2); - "hello you 2" MySQL では、符号付きと符号なしのどちらでも、64 ビット値の演算をサポートしています。 数値演算(+ など)でどちらか一方のオペランドが unsigned integer の場合、結果の値は符号なしになります。 ただし、キャスト演算子 SIGNED と UNSIGNED を使用することによって、それぞれ符号付き、または符号なしの 64 ビット整数にキャストできます。 mysql SELECT CAST(1-2 AS UNSIGNED) - 18446744073709551615 mysql SELECT CAST(CAST(1-2 AS UNSIGNED) AS SIGNED); - -1 注意 どちらか一方のオペランドが浮動小数点数の場合、結果の値は浮動小数点数になり、上記の規則は適用されません(このコンテキストでは、DECIMAL 型の値は浮動小数点数とみなされます)。 mysql SELECT CAST(1 AS UNSIGNED) - 2.0; - -1.0 算術演算に文字列を使用すると、その文字列は浮動小数点数に変換されます。 符号なしの値の扱いについては、BIGINT 型の値に適切に対応するよう、MySQL 4.0 で変更されました。MySQL 4.0 と 3.23 の両方で実行するコードがあるとき(通常、この場合、CAST() 関数は使用できない)、次の方法によって、2 つの符号なし整数カラムの減算の実行時に符号付きの結果値を得ることができます。 SELECT (unsigned_column_1+0.0)-(unsigned_column_2+0.0); この方法では、減算の実行前に両方のカラムを浮動小数点型に変換しています。 以前の MySQL アプリケーションの UNSIGNED 型のカラムを MySQL 4.0 に移植した場合に問題があるときは、mysqld の起動時に --sql-mode=NO_UNSIGNED_SUBTRACTION オプションを指定します。注意 このオプションを指定した場合、BIGINT UNSIGNED カラム型を効率的に使用することはできません。 USING を指定する CONVERT() は、データのキャラクタセットを別のキャラクタセットに変換するときに使用します。MySQL では、トランスコーディング名は対応するキャラクタセット名と同じです。たとえば、次のステートメントでは、サーバのデフォルトのキャラクタセットに基づく文字列 'abc' が、utf8 キャラクタセットの対応する文字列に変換されます。 SELECT CONVERT('abc' USING utf8); _uacct = UA-4617913-1 ; urchinTracker();
https://w.atwiki.jp/yunomip/pages/55.html
・クリック推奨(別窓開きます) ・Mystic Tea Party パッケージ/クリアファイル アリスの足 ・Mystic Tea Party パッケージ/クリアファイル 箱 ・Mystic Tea Party パッケージ/クリアファイル 王冠
https://w.atwiki.jp/z-ed/
PROFILE BBS[工事中] お役立ちLINK ┣Take the Nextage ┣GuitarFreaks PAGER-PLUS- ┗ザイゴ・ザ・ドラムマニアックス